package cn.appsys.dao.back.appinfo;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.appsys.pojo.AppCategory;
import cn.appsys.pojo.AppInfo;
import cn.appsys.pojo.AppVersion;
import cn.appsys.pojo.DataDictionary;

public interface BackAppInfoMapper {
	
	/**
	 * 按条件查询待审核状态的App信息列表信息并分页显示
	 * @param querySoftwareName 软件名称
	 * @param queryFlatformId app所属平台id
	 * @param queryCategoryLevel1 所属一级分类id
	 * @param queryCategoryLevel2 所属二级分类id
	 * @param queryCategoryLevel3 所属三级分类id
	 * @param from 位置起始偏移量
	 * @param pageSize 页面大小
	 * @return
	 */
	List<AppInfo> queryAppInfo(@Param("querySoftwareName") String querySoftwareName,
					@Param("queryFlatformId") Integer queryFlatformId,
					@Param("queryCategoryLevel1") Integer queryCategoryLevel1,
					@Param("queryCategoryLevel2") Integer queryCategoryLevel2,
					@Param("queryCategoryLevel3") Integer queryCategoryLevel3,
					@Param("from") Integer from,
					@Param("pageSize") Integer pageSize);
	
	/**
	 * 按条件查询待审核状态的App信息列表信息的总数
	 * @param querySoftwareName 软件名称
	 * @param queryFlatformId app所属平台id
	 * @param queryCategoryLevel1 所属一级分类id
	 * @param queryCategoryLevel2 所属二级分类id
	 * @param queryCategoryLevel3 所属三级分类id
	 * @return
	 */
	int queryTotalCount(@Param("querySoftwareName") String querySoftwareName,
		@Param("queryFlatformId")Integer queryFlatformId,
	    @Param("queryCategoryLevel1") Integer queryCategoryLevel1,
	    @Param("queryCategoryLevel2") Integer queryCategoryLevel2,
		@Param("queryCategoryLevel3") Integer queryCategoryLevel3);
	
	/**
	 * 根据当前类别ID查询当前类别下的子级类别信息列表
	 * @param parentId 类别ID
	 * @return
	 */
	List<AppCategory> queryappCategoryList(@Param("categoryId") Integer categoryId);
	
	/**
	 * 查询所有的平台信息列表
	 * @return
	 */
	List<DataDictionary> queryAllFlatFrom(@Param("typeCode") String typeCode);
	
	/**
	 * 根据ID查询App信息列表信息
	 * @param id
	 * @return
	 */
	AppInfo getAppInfo(@Param("appId")Integer appId);
	
	/**
	 * 根据ID查询平台版本信息
	 * @param versionId
	 * @return
	 */
	AppVersion getAppVersionById(@Param("versionId")Integer versionId);
	
	/**
	 * 根据Id修改App状态信息
	 * @param id
	 * @return
	 */
	Integer upStatus(@Param("status") Integer status,@Param("id") Integer id);
	
}
